<?php
include_once "../funciones/class_carrito_orden.php";
include_once "filtro_cabecera.php";
include_once "../funciones/funciones_php.php";

function getTarifa($id_cliente, $idComuna)
{
  
    //Obtiene el destino segun la comuna seleccionada y el id_tarifa asiganado al cliente
    $conexion = conectar();
    $sql = sprintf("SELECT cliente.id_tarifa_cliente,destino.id_destino, comuna.id_ruta
            FROM cliente, destino, comuna
            WHERE cliente.id_cliente = '%s'
            AND comuna.id_comuna = '%s'
            AND destino.id_destino = comuna.id_destino",
            pg_escape_string($id_cliente),pg_escape_string($idComuna));
    $consulta = pg_query($sql) or die("Error al obtener la tarifa |");
    $numFilas = pg_num_rows($consulta);
    
    //Si existe tarifa asignada al cliente, se le iguala a una varialbe
    if($numFilas > 0)
    {
      
               $id_tarifa_cliente = pg_fetch_array($consulta);
        return $id_tarifa_cliente;
    }
    else
    { //si no existe una tarida asignada al cliente detiene el proceso
      
      die("No existe tarifa asignada para este cliente |");
    
    }
    pg_close($conexion);

}

//funcion eliminar del carrito de compra
function esValidaFactura($objeto, $factura, $idCliente)
{
  conectar();
  //Primero valida si ya se ingreso en la base de datos
  $sql = sprintf("SELECT num_factura
          FROM encomienda enc, orden_flete of
          WHERE of.id_cliente= '%s'
          AND enc.id_orden_flete = of.id_orden_flete
          AND enc.num_factura = '%s'",
          pg_escape_string($idCliente),pg_escape_string($factura));
  
  $numFilasAfectadas = pg_num_rows(pg_query($sql));
  
  if($numFilasAfectadas > 0) return false;
  
  pg_close();
  
  if(!$objeto->vacio())
  {
      for($i = 0 ; $i < $objeto->getUltimoId() ; $i++)
      {
          //Si la fila no esta eliminada la muestra
          if( !$objeto->lineaEliminada($i) )
          {
                if($objeto->getFactura($i) == $factura)
                {
                    return false;
                }
                
          }
      }
  }
  return true;
}

//Recibe variables del formulario y las ingresa al carrito
if( isset($_POST['Introduce'], $_SESSION['carrito_orden_factura']) )
{
  
    $id_cliente = $_POST['id_remitente'];
    $idDepartamento = $_POST['id_departamento'];
    
    //valida rut
    valida_rut($_POST['rut_consignatario']) ? $rut = trim($_POST['rut_consignatario']) : die ("Rut invalido");
    //Limpia variables de formulario
    $nombre = strtoupper(limpiaString(trim($_POST['nombre_consignatario'])));
    $apellido = strtoupper(limpiaString(trim($_POST['apellido_consignatario'])));
    $telefono = strtoupper(limpiaString(trim($_POST['telefono_consignatario'])));
    $direccion = strtoupper(limpiaString(trim($_POST['direccion_consignatario'])));
    $numDireccion = strtoupper(trim($_POST['numero_direccion_consignatario']));
    $depto = strtoupper(limpiaString(trim($_POST['depto_consignatario'])));
    validaInt($_POST['id_comuna_consignatario']) ? $idComuna = strtoupper(trim($_POST['id_comuna_consignatario'])) : die("id comuna debe ser numeros");
    $comuna = strtoupper(limpiaString(trim($_POST['comuna_consignatario'])));
    $contacto = strtoupper(limpiaString(trim($_POST['contacto_consignatario'])));
    
    //echo validaInt($_POST['hrecargo']);
    //DATOS DE VALOR DE ENVIO
    if( validaInt($_POST['htotal']) === false || validaInt($_POST['hrecargo']) === false || validaInt($_POST['hsubtotal']) === false  ){
      
      die("Debe ingresar valores validos");
    
    }
    else{
      
      $subtotal = $_POST['hsubtotal'];
      $recargo = $_POST['hrecargo'];
      $total = $_POST['htotal'];
    
    }
    
    //Si correo no esta vacio lo valida, de lo contrario no lo valida
    if(!empty($_POST['correo_consignatario'])){
      
      validaEmail($_POST['correo_consignatario']) ? $correo = trim($_POST['correo_consignatario']) : die("Debe ingresar un correo valido "); 
    
    }
    
    $tipoEnvio = trim($_POST['tipo_envio']);
    
      
    if($_POST['factura'] != 0 || !empty($_POST['factura'])){
      validaInt($_POST['factura']) ? $factura = strtoupper(trim($_POST['factura'])) : die("Factura debe ser numeros ");
    }
    else{
      die("Numero de factura debe ser valido ");
    }

      
    $instruccionesEsp = limpiaString(trim($_POST['instruccionesEsp']));
    
    //Si el numero de orden es vacio se le asigna valor NULL
    if(empty($_POST['num_comprobante'])){
      
      die("Debe ingresar numero de comprobante valido ");
    }
    else{
      
      validaInt($_POST['num_comprobante']) ? $num_orden = strtoupper(trim($_POST['num_comprobante'])) : die("Debe ingresar un numero de comprobante valido ");  
    }
    
    //Obtiene tarifa que tiene asignado el cliente al destino y su ruta
    $id_tarifa_cliente = getTarifa($id_cliente, $idComuna);
    $ruta = $id_tarifa_cliente['id_ruta'];
    
    //Valida si es viable el tipo de envio con las encomiendas seleccionadas
    if(validaTipoEnvio( 0, 0, 0, $factura, $id_tarifa_cliente['id_destino'], $id_tarifa_cliente['id_tarifa_cliente'], $tipoEnvio)){
      
        if( esValidaFactura($_SESSION['carrito_orden_factura'], $factura, $id_cliente) ){
            
            //Ingresa la orden al carrito
            $_SESSION['carrito_orden_factura']->ingresa_orden($id_cliente, $nombre, $apellido, $rut, $telefono, $direccion, $numDireccion, $depto, $comuna, $idComuna, $contacto, $correo, $tipoEnvio, 0, 0, 0, $factura, $instruccionesEsp);
            $_SESSION['ruta_factura'][] = $ruta;
            $_SESSION['valorFactura']['subtotal'][] = $subtotal;
            $_SESSION['valorFactura']['recargo'][] = $recargo;
            $_SESSION['valorFactura']['total'][] = $total;
        }
        else{
          
            die("El numero de factura ingresado ya existe");  
        }
    }
    else{
        die("No se puede enviar facturas a ese destino ");  
    }
    
    if(empty($idDepartamento)) die("Debe Selecionar departamento de cliente");
    
    echo "Orden ingesada correctamente ";
}
elseif(isset($_POST['Introduce'])){
  
  echo "Error";

}
else{

  echo "Error";

}
//mostrar_carrito_orden_factura($_SESSION['carrito_orden_factura']);
//echo "<div id='mensaje'></div>";

?>